Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


docs/example_plugins/connection_map.py 81a09a2785036cb4db577c7f36540c3aecb36c6a (81a09a27) Text, 3.48 KB

T8b949e# This example plugin creates a connection map of clients
T8b949e# connected to any BackboneInterface on your system, as
T8b949e# well as blocked IP addresses, and uses a locally stored
T8b949e# IP-to-approximate-location database, so that no IP data
T8b949e# touches external geo-location APIs. Additionally, this
T8b949e# example strips the actual IP addresses from the saved
T8b949e# telemetry data, so only the approximate locations are
T8b949e# stored and sent to downstream telemetry consumers.

T8b949e# This example only show the "connection" and "blocked"
T8b949e# label types, but you can additionally use "signal-P",
T8b949e# where P is the signal quality in percent, from 0 to 100.
T8b949e# In this case, Sideband will display the signal quality
T8b949e# as icons on the map. This can be useful for creating
T8b949e# coverage overviews, or for monitoring signal quality
T8b949e# of deployed links and instances.

Tff7b72import T7ee787os
Tff7b72import T7ee787RNS
Tff7b72import T7ee787IP2Location

Tff7b72class T56d364ConnectionMapPluginTb4b4b4(Te6edf3SidebandTelemetryPluginTb4b4b4)Tb4b4b4:
Te6edf3plugin_name Tff7b72= Ta5d6ff"Ta5d6ffconnection_mapTa5d6ff"

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffConnection map telemetry plugin starting...Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffipdb Tff7b72= Te6edf3IP2LocationTff7b72.Td2a8ffIP2LocationTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexpanduserTb4b4b4(Ta5d6ff"Ta5d6ffIP2LOCATION-LITE-DB5.IPV6.BINTa5d6ff"Tb4b4b4)Tb4b4b4)
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffupdate_telemetryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3telemeterTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72if Te6edf3telemeter Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3rd Tff7b72= Te6edf3telemeterTff7b72.Td2a8ffreadTb4b4b4(Ta5d6ff"Ta5d6ffrns_transportTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3rd Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3telemeterTff7b72.Td2a8ffsynthesizeTb4b4b4(Ta5d6ff"Ta5d6ffconnection_mapTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3rdTb4b4b4[Ta5d6ff"Ta5d6ffifstatsTa5d6ff"Tb4b4b4]Tb4b4b4: Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffNo interfacesTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3ifs Tff7b72= Te6edf3rdTb4b4b4[Ta5d6ff"Ta5d6ffifstatsTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3mc Tff7b72= T79c0ff0Tb4b4b4; Te6edf3bc Tff7b72= T79c0ff0
Tff7b72for Te6edf3iface Tff7b72in Te6edf3ifsTb4b4b4:
Tff7b72if Ta5d6ff"Ta5d6ffparent_interface_nameTa5d6ff" Tff7b72in Te6edf3iface Tff7b72and Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffparent_interface_nameTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3match_str Tff7b72= Ta5d6ff"Ta5d6ffBackboneInterface[Client onTa5d6ff"
Tff7b72if Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffstartswithTb4b4b4(Te6edf3match_strTb4b4b4)Tb4b4b4:
Te6edf3mc Tff7b72+Tff7b72= T79c0ff1
Te6edf3parsed Tff7b72= Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3match_strTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)
Te6edf3n Tff7b72= Te6edf3parsedTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4:Tb4b4b4]Tb4b4b4; Te6edf3ip Tff7b72= Te6edf3parsedTb4b4b4[T79c0ff1Tb4b4b4]Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3ipr Tff7b72= Tff7b72selfTff7b72.Td2a8ffipdbTff7b72.Td2a8ffget_allTb4b4b4(Te6edf3ipTb4b4b4)Tb4b4b4; Te6edf3lat Tff7b72= Te6edf3iprTff7b72.Td2a8fflatitudeTb4b4b4; Te6edf3lon Tff7b72= Te6edf3iprTff7b72.Td2a8fflongitude
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3lat Tff7b72== T79c0ff0 Tff7b72and Te6edf3lon Tff7b72== T79c0ff0Tb4b4b4)Tb4b4b4:
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6ffconnection_mapTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffadd_pointTb4b4b4(Te6edf3latTb4b4b4, Te6edf3lonTb4b4b4, Te6edf3map_nameTff7b72=Ta5d6ff"Ta5d6ffbackbone_clientsTa5d6ff"Tb4b4b4,
Te6edf3altitudeTff7b72=T79c0ff0Tb4b4b4, Te6edf3type_labelTff7b72=Ta5d6ff"Ta5d6ffconnectionTa5d6ff"Tb4b4b4, Te6edf3nameTff7b72=Te6edf3nTb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffblocked_ip_listTa5d6ff" Tff7b72in Te6edf3ifaceTb4b4b4:
Tff7b72for Te6edf3blocked_ip Tff7b72in Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffblocked_ip_listTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3bc Tff7b72+Tff7b72= T79c0ff1
Te6edf3n Tff7b72= Te6edf3blocked_ip
Te6edf3ipr Tff7b72= Tff7b72selfTff7b72.Td2a8ffipdbTff7b72.Td2a8ffget_allTb4b4b4(Te6edf3blocked_ipTb4b4b4)Tb4b4b4; Te6edf3lat Tff7b72= Te6edf3iprTff7b72.Td2a8fflatitudeTb4b4b4; Te6edf3lon Tff7b72= Te6edf3iprTff7b72.Td2a8fflongitude
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3lat Tff7b72== T79c0ff0 Tff7b72and Te6edf3lon Tff7b72== T79c0ff0Tb4b4b4)Tb4b4b4:
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6ffconnection_mapTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffadd_pointTb4b4b4(Te6edf3latTb4b4b4, Te6edf3lonTb4b4b4, Te6edf3map_nameTff7b72=Ta5d6ff"Ta5d6ffblocked_ipsTa5d6ff"Tb4b4b4,
Te6edf3altitudeTff7b72=T79c0ff0Tb4b4b4, Te6edf3type_labelTff7b72=Ta5d6ff"Ta5d6ffblockedTa5d6ff"Tb4b4b4, Te6edf3nameTff7b72=Te6edf3nTb4b4b4)

Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAdded Tffd700{Te6edf3mcTffd700}Ta5d6ff interfaces, Tffd700{Te6edf3bcTffd700}Ta5d6ff blocked IPsTa5d6ff"Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCould not update connection map: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Te6edf3plugin_class Tff7b72= Te6edf3ConnectionMapPlugin


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────